import 'package:flutter/material.dart';

/// 左侧面板里显示 "当前 SDK" 的紧凑组件
/// - 展示当前选中的 SDK 路径
/// - 如果未选中则显示 "Not selected"
/// - 支持选择新的 SDK
/// - 支持外部调用清除 / 复制功能（通过回调暴露）
class CompactCurrentSdk extends StatelessWidget {
  const CompactCurrentSdk({
    super.key,
    required this.currentPath,
    required this.onPickLocal,
    required this.onClear,
    required this.onCopy,
  });

  /// 当前 SDK 的路径，如果没有选中则为 null
  final String? currentPath;

  /// 点击“Select”按钮时触发，通常用于打开文件夹选择器
  final VoidCallback onPickLocal;

  /// 清除当前 SDK 的回调（外部触发）
  final VoidCallback onClear;

  /// 复制当前 SDK 路径的回调（外部触发）
  final void Function(String?) onCopy;

  @override
  Widget build(BuildContext context) {
    final _ = Theme.of(context).colorScheme; // 当前主题的颜色方案（未直接使用）
    return Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        /// 显示当前 SDK 路径（或未选中提示）
        ConstrainedBox(
          constraints: const BoxConstraints(minHeight: 44),
          child: Row(
            children: [
              Expanded(
                child: Tooltip(
                  // 鼠标悬停时展示完整路径
                  message: currentPath ?? 'Not selected',
                  child: Text(
                    currentPath ?? 'Not selected',
                    maxLines: 2,
                    overflow: TextOverflow.ellipsis, // 超出显示省略号
                    style: Theme.of(context).textTheme.bodyMedium,
                  ),
                ),
              ),
            ],
          ),
        ),

        const SizedBox(height: 8),

        /// “选择 SDK”按钮
        SizedBox(
          width: double.infinity, // 撑满父容器
          child: TextButton.icon(
            onPressed: onPickLocal, // 点击时触发回调
            icon: const Icon(Icons.folder_open, size: 18),
            label: const Text('Select'),
            style: TextButton.styleFrom(
              minimumSize: const Size.fromHeight(36), // 设置按钮高度为 36
            ),
          ),
        ),
      ],
    );
  }
}
